Skip to content

fix: correct get_metadata return annotations - #2424

Open
Gagandeep-2003 wants to merge 1 commit into
unionai-oss:mainfrom
Gagandeep-2003:bugfix/1750
Open

fix: correct get_metadata return annotations#2424
Gagandeep-2003 wants to merge 1 commit into
unionai-oss:mainfrom
Gagandeep-2003:bugfix/1750

Conversation

@Gagandeep-2003

Copy link
Copy Markdown

Summary

  • Correct the return annotations of DataFrameModel.get_metadata() and DataFrameSchema.get_metadata() from dict | None to dict[Any, Any].
  • Add static typing regression coverage using Pandera’s existing no-plugin mypy test setup.

Both methods always return dictionaries, so callers should not need to handle an impossible None value. This change only corrects the public type annotations and does not alter runtime behavior.

Closes #1750

Tests

    • .venv/bin/python -m mypy tests/mypy/pandas_modules/pandera_metadata.py --config-file tests/mypy/config/no_plugin.ini
  • .venv/bin/python -m pytest tests/mypy/test_pandas_static_type_checking.py -q
  • .venv/bin/python -m pytest tests/pandas/test_schemas.py::test_get_schema_metadata tests/pandas/test_model.py::test_pandas_fields_metadata -q
  • .venv/bin/python -m pytest tests/pandas/test_model.py tests/pandas/test_schemas.py -q
  • prek run --files pandera/api/dataframe/container.py pandera/api/dataframe/model.py tests/mypy/pandas_modules/pandera_metadata.py tests/mypy/test_pandas_static_type_checking.py

Signed-off-by: Gagandeep-2003 <gagandeeppctebca21a@gmail.com>
@codecov

codecov Bot commented Jul 31, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 91.23%. Comparing base (0d685d2) to head (3e5f614).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #2424   +/-   ##
=======================================
  Coverage   91.23%   91.23%           
=======================================
  Files         193      193           
  Lines       17134    17134           
=======================================
  Hits        15633    15633           
  Misses       1501     1501           
Flag Coverage Δ
unit-tests-base-Linux-py3.10 15.38% <100.00%> (ø)
unit-tests-base-Linux-py3.11 15.38% <100.00%> (ø)
unit-tests-base-Linux-py3.12 15.38% <100.00%> (ø)
unit-tests-base-Linux-py3.13 15.38% <100.00%> (ø)
unit-tests-base-Linux-py3.14 15.24% <100.00%> (ø)
unit-tests-base-Windows-py3.10 15.30% <100.00%> (ø)
unit-tests-base-Windows-py3.11 15.30% <100.00%> (ø)
unit-tests-base-Windows-py3.12 15.30% <100.00%> (ø)
unit-tests-base-Windows-py3.13 15.30% <100.00%> (ø)
unit-tests-base-Windows-py3.14 15.17% <100.00%> (ø)
unit-tests-base-macOS-py3.10 15.31% <100.00%> (ø)
unit-tests-base-macOS-py3.11 15.31% <100.00%> (ø)
unit-tests-base-macOS-py3.12 15.31% <100.00%> (ø)
unit-tests-base-macOS-py3.13 15.31% <100.00%> (ø)
unit-tests-base-macOS-py3.14 15.18% <100.00%> (ø)
unit-tests-dask-Linux-py3.10-pandas2.3.3-polars 24.23% <100.00%> (ø)
unit-tests-dask-Linux-py3.11-pandas2.3.3-polars 24.23% <100.00%> (ø)
unit-tests-dask-Linux-py3.12-pandas2.3.3-polars 24.23% <100.00%> (ø)
unit-tests-dask-Linux-py3.13-pandas2.3.3-polars 24.23% <100.00%> (ø)
unit-tests-dask-Linux-py3.14-pandas2.3.3-polars 24.14% <100.00%> (ø)
unit-tests-dask-Windows-py3.10-pandas2.3.3-polars 24.14% <100.00%> (ø)
unit-tests-dask-Windows-py3.11-pandas2.3.3-polars 24.14% <100.00%> (ø)
unit-tests-dask-Windows-py3.12-pandas2.3.3-polars 24.14% <100.00%> (ø)
unit-tests-dask-Windows-py3.13-pandas2.3.3-polars 24.14% <100.00%> (ø)
unit-tests-dask-Windows-py3.14-pandas2.3.3-polars 24.06% <100.00%> (ø)
unit-tests-dask-macOS-py3.10-pandas2.3.3-polars 24.17% <100.00%> (ø)
unit-tests-dask-macOS-py3.11-pandas2.3.3-polars 24.17% <100.00%> (ø)
unit-tests-fastapi-Linux-py3.10-pandas2.3.3-pydantic2.12.3 24.67% <100.00%> (ø)
unit-tests-fastapi-Linux-py3.12-pandas3.0.0-pydantic2.12.3 24.74% <100.00%> (ø)
unit-tests-fastapi-Linux-py3.14-pandas2.3.3-pydantic2.12.3 24.58% <100.00%> (ø)
unit-tests-geopandas-Linux-py3.11-pandas2.3.3-pydantic2.12.3 30.04% <100.00%> (ø)
unit-tests-geopandas-Linux-py3.11-pandas3.0.0-pydantic2.12.3 30.04% <100.00%> (ø)
unit-tests-geopandas-Linux-py3.12-pandas2.3.3-pydantic2.12.3 30.04% <100.00%> (-0.04%) ⬇️
unit-tests-hypotheses-Linux-py3.10-pandas2.3.3-pydantic2.12.3 22.48% <100.00%> (ø)
unit-tests-hypotheses-Linux-py3.13-pandas3.0.0-pydantic2.12.3 22.51% <100.00%> (-0.02%) ⬇️
unit-tests-hypotheses-Linux-py3.14-pandas3.0.0-pydantic2.12.3 22.41% <100.00%> (ø)
unit-tests-hypotheses-Windows-py3.11-pandas3.0.0-pydantic2.12.3 22.44% <100.00%> (ø)
unit-tests-ibis-Linux-py3.10-pandas2.3.3-polars 28.85% <100.00%> (ø)
unit-tests-ibis-Linux-py3.11-pandas2.3.3-polars 28.85% <100.00%> (ø)
unit-tests-ibis-Linux-py3.12-pandas2.3.3-polars 28.85% <100.00%> (ø)
unit-tests-ibis-Linux-py3.13-pandas2.3.3-polars 28.85% <100.00%> (ø)
unit-tests-ibis-Linux-py3.14-pandas2.3.3-polars 28.66% <100.00%> (ø)
unit-tests-ibis-Windows-py3.10-pandas2.3.3-polars 28.78% <100.00%> (ø)
unit-tests-ibis-Windows-py3.11-pandas2.3.3-polars 28.78% <100.00%> (ø)
unit-tests-ibis-Windows-py3.12-pandas2.3.3-polars 28.78% <100.00%> (ø)
unit-tests-ibis-Windows-py3.13-pandas2.3.3-polars 28.78% <100.00%> (ø)
unit-tests-ibis-Windows-py3.14-pandas2.3.3-polars 28.59% <100.00%> (ø)
unit-tests-ibis-macOS-py3.10-pandas2.3.3-polars 28.79% <100.00%> (ø)
unit-tests-ibis-macOS-py3.11-pandas2.3.3-polars 28.79% <100.00%> (ø)
unit-tests-io-Linux-py3.11-pandas2.3.3-pydantic2.12.3 38.12% <100.00%> (ø)
unit-tests-io-Linux-py3.11-pandas3.0.0-pydantic2.12.3 38.10% <100.00%> (-0.01%) ⬇️
unit-tests-io-Windows-py3.10-pandas2.3.3-pydantic2.12.3 37.73% <100.00%> (ø)
unit-tests-io-Windows-py3.11-pandas3.0.0-pydantic2.12.3 37.74% <100.00%> (-0.01%) ⬇️
unit-tests-modin-dask-Linux-py3.11-pandas2.3.3-polars 30.67% <100.00%> (-0.05%) ⬇️
unit-tests-modin-dask-macOS-py3.10-pandas2.3.3-polars 30.61% <100.00%> (-0.04%) ⬇️
unit-tests-modin-ray-Linux-py3.10-pandas2.3.3-polars 30.64% <100.00%> (ø)
unit-tests-modin-ray-Linux-py3.11-pandas2.3.3-polars 30.64% <100.00%> (ø)
unit-tests-modin-ray-Linux-py3.12-pandas2.3.3-polars 30.64% <100.00%> (ø)
unit-tests-modin-ray-macOS-py3.10-pandas2.3.3-polars 30.58% <100.00%> (ø)
unit-tests-modin-ray-macOS-py3.11-pandas2.3.3-polars 30.58% <100.00%> (ø)
unit-tests-narwhals-Linux-py3.10 28.26% <100.00%> (ø)
unit-tests-narwhals-Linux-py3.11 28.26% <100.00%> (ø)
unit-tests-narwhals-Linux-py3.12 28.26% <100.00%> (ø)
unit-tests-narwhals-Linux-py3.13 28.26% <100.00%> (ø)
unit-tests-narwhals-Linux-py3.14 28.04% <100.00%> (ø)
unit-tests-narwhals-backend-ibis-py3.10 31.80% <100.00%> (ø)
unit-tests-narwhals-backend-ibis-py3.11 31.69% <100.00%> (ø)
unit-tests-narwhals-backend-ibis-py3.12 31.69% <100.00%> (ø)
unit-tests-narwhals-backend-ibis-py3.13 31.69% <100.00%> (ø)
unit-tests-narwhals-backend-ibis-py3.14 31.48% <100.00%> (ø)
unit-tests-narwhals-backend-polars-py3.10 34.48% <100.00%> (ø)
unit-tests-narwhals-backend-polars-py3.11 34.47% <100.00%> (ø)
unit-tests-narwhals-backend-polars-py3.12 34.47% <100.00%> (ø)
unit-tests-narwhals-backend-polars-py3.13 34.47% <100.00%> (ø)
unit-tests-narwhals-backend-polars-py3.14 34.33% <100.00%> (ø)
unit-tests-narwhals-backend-pyspark-py3.10 43.46% <100.00%> (ø)
unit-tests-narwhals-backend-pyspark-py3.11 43.49% <100.00%> (ø)
unit-tests-pandas-Linux-py3.10-pandas2.3.3-pydantic1.10.11 42.76% <100.00%> (ø)
unit-tests-pandas-Linux-py3.10-pandas2.3.3-pydantic2.12.3 42.91% <100.00%> (ø)
unit-tests-pandas-Linux-py3.11-pandas2.3.3-pydantic1.10.11 42.76% <100.00%> (ø)
unit-tests-pandas-Linux-py3.11-pandas2.3.3-pydantic2.12.3 42.91% <100.00%> (ø)
unit-tests-pandas-Linux-py3.11-pandas3.0.0-pydantic1.10.11 42.77% <100.00%> (ø)
unit-tests-pandas-Linux-py3.11-pandas3.0.0-pydantic2.12.3 42.93% <100.00%> (ø)
unit-tests-pandas-Linux-py3.12-pandas2.3.3-pydantic1.10.11 42.75% <100.00%> (ø)
unit-tests-pandas-Linux-py3.12-pandas2.3.3-pydantic2.12.3 42.90% <100.00%> (ø)
unit-tests-pandas-Linux-py3.12-pandas3.0.0-pydantic1.10.11 42.76% <100.00%> (ø)
unit-tests-pandas-Linux-py3.12-pandas3.0.0-pydantic2.12.3 42.91% <100.00%> (ø)
unit-tests-pandas-Linux-py3.13-pandas2.3.3-pydantic1.10.11 42.75% <100.00%> (ø)
unit-tests-pandas-Linux-py3.13-pandas2.3.3-pydantic2.12.3 42.90% <100.00%> (ø)
unit-tests-pandas-Linux-py3.13-pandas3.0.0-pydantic1.10.11 42.76% <100.00%> (ø)
unit-tests-pandas-Linux-py3.13-pandas3.0.0-pydantic2.12.3 42.91% <100.00%> (ø)
unit-tests-pandas-Linux-py3.14-pandas2.3.3-pydantic2.12.3 42.88% <100.00%> (ø)
unit-tests-pandas-Linux-py3.14-pandas3.0.0-pydantic2.12.3 42.90% <100.00%> (ø)
unit-tests-pandas-Windows-py3.10-pandas2.3.3-pydantic1.10.11 42.67% <100.00%> (ø)
unit-tests-pandas-Windows-py3.10-pandas2.3.3-pydantic2.12.3 42.83% <100.00%> (ø)
unit-tests-pandas-Windows-py3.11-pandas2.3.3-pydantic1.10.11 42.67% <100.00%> (ø)
unit-tests-pandas-Windows-py3.11-pandas2.3.3-pydantic2.12.3 42.83% <100.00%> (ø)
unit-tests-pandas-Windows-py3.11-pandas3.0.0-pydantic1.10.11 42.68% <100.00%> (ø)
unit-tests-pandas-Windows-py3.11-pandas3.0.0-pydantic2.12.3 42.84% <100.00%> (ø)
unit-tests-pandas-Windows-py3.12-pandas2.3.3-pydantic1.10.11 42.66% <100.00%> (ø)
unit-tests-pandas-Windows-py3.12-pandas2.3.3-pydantic2.12.3 42.81% <100.00%> (ø)
unit-tests-pandas-Windows-py3.12-pandas3.0.0-pydantic1.10.11 42.67% <100.00%> (ø)
unit-tests-pandas-Windows-py3.12-pandas3.0.0-pydantic2.12.3 42.83% <100.00%> (ø)
unit-tests-pandas-Windows-py3.13-pandas2.3.3-pydantic1.10.11 42.66% <100.00%> (ø)
unit-tests-pandas-Windows-py3.13-pandas2.3.3-pydantic2.12.3 42.81% <100.00%> (ø)
unit-tests-pandas-Windows-py3.13-pandas3.0.0-pydantic1.10.11 42.67% <100.00%> (ø)
unit-tests-pandas-Windows-py3.13-pandas3.0.0-pydantic2.12.3 42.83% <100.00%> (ø)
unit-tests-pandas-Windows-py3.14-pandas2.3.3-pydantic2.12.3 42.80% <100.00%> (ø)
unit-tests-pandas-Windows-py3.14-pandas3.0.0-pydantic2.12.3 42.81% <100.00%> (ø)
unit-tests-pandas-macOS-py3.10-pandas2.3.3-pydantic1.10.11 42.70% <100.00%> (ø)
unit-tests-pandas-macOS-py3.10-pandas2.3.3-pydantic2.12.3 42.85% <100.00%> (ø)
unit-tests-pandas-macOS-py3.11-pandas2.3.3-pydantic1.10.11 42.70% <100.00%> (ø)
unit-tests-pandas-macOS-py3.11-pandas2.3.3-pydantic2.12.3 42.85% <100.00%> (ø)
unit-tests-pandas-macOS-py3.11-pandas3.0.0-pydantic1.10.11 42.71% <100.00%> (ø)
unit-tests-pandas-macOS-py3.11-pandas3.0.0-pydantic2.12.3 42.86% <100.00%> (ø)
unit-tests-pandas-macOS-py3.12-pandas2.3.3-pydantic1.10.11 42.68% <100.00%> (ø)
unit-tests-pandas-macOS-py3.12-pandas2.3.3-pydantic2.12.3 42.84% <100.00%> (ø)
unit-tests-pandas-macOS-py3.12-pandas3.0.0-pydantic1.10.11 42.70% <100.00%> (ø)
unit-tests-pandas-macOS-py3.12-pandas3.0.0-pydantic2.12.3 42.85% <100.00%> (ø)
unit-tests-pandas-macOS-py3.13-pandas2.3.3-pydantic1.10.11 42.68% <100.00%> (ø)
unit-tests-pandas-macOS-py3.13-pandas2.3.3-pydantic2.12.3 42.84% <100.00%> (ø)
unit-tests-pandas-macOS-py3.13-pandas3.0.0-pydantic1.10.11 42.70% <100.00%> (ø)
unit-tests-pandas-macOS-py3.13-pandas3.0.0-pydantic2.12.3 42.85% <100.00%> (ø)
unit-tests-pandas-macOS-py3.14-pandas2.3.3-pydantic2.12.3 42.82% <100.00%> (ø)
unit-tests-pandas-macOS-py3.14-pandas3.0.0-pydantic2.12.3 42.83% <100.00%> (ø)
unit-tests-polars-Linux-py3.10-pandas2.3.3-polars1.33.1 31.08% <100.00%> (ø)
unit-tests-polars-Linux-py3.11-pandas2.3.3-polars1.33.1 31.07% <100.00%> (ø)
unit-tests-polars-Linux-py3.12-pandas2.3.3-polars1.33.1 31.07% <100.00%> (ø)
unit-tests-polars-Linux-py3.13-pandas2.3.3-polars1.33.1 31.07% <100.00%> (ø)
unit-tests-polars-Linux-py3.14-pandas2.3.3-polars1.33.1 30.94% <100.00%> (ø)
unit-tests-polars-Windows-py3.10-pandas2.3.3-polars1.33.1 31.01% <100.00%> (ø)
unit-tests-polars-Windows-py3.11-pandas2.3.3-polars1.33.1 30.99% <100.00%> (ø)
unit-tests-polars-Windows-py3.12-pandas2.3.3-polars1.33.1 30.99% <100.00%> (ø)
unit-tests-polars-Windows-py3.13-pandas2.3.3-polars1.33.1 30.99% <100.00%> (ø)
unit-tests-polars-Windows-py3.14-pandas2.3.3-polars1.33.1 30.87% <100.00%> (ø)
unit-tests-polars-macOS-py3.10-pandas2.3.3-polars1.33.1 31.02% <100.00%> (ø)
unit-tests-polars-macOS-py3.11-pandas2.3.3-polars1.33.1 31.01% <100.00%> (ø)
unit-tests-pyspark-Linux-py3.10-pandas2.3.3-polars 38.97% <100.00%> (ø)
unit-tests-pyspark-macOS-py3.11-pandas2.3.3-polars 38.91% <100.00%> (?)
unit-tests-strategies-Windows-py3.10-pandas2.3.3-pydantic2.12.3 34.07% <100.00%> (-0.04%) ⬇️
unit-tests-xarray-Linux-py3.10-pandas2.3.3-polars 31.75% <100.00%> (ø)
unit-tests-xarray-Linux-py3.11-pandas2.3.3-polars 31.75% <100.00%> (ø)
unit-tests-xarray-Linux-py3.12-pandas2.3.3-polars 31.75% <100.00%> (ø)
unit-tests-xarray-Linux-py3.13-pandas2.3.3-polars 31.75% <100.00%> (ø)
unit-tests-xarray-Linux-py3.14-pandas2.3.3-polars 31.68% <100.00%> (ø)
unit-tests-xarray-Windows-py3.10-pandas2.3.3-polars 31.68% <100.00%> (ø)
unit-tests-xarray-Windows-py3.11-pandas2.3.3-polars 31.68% <100.00%> (ø)
unit-tests-xarray-Windows-py3.12-pandas2.3.3-polars 31.68% <100.00%> (ø)
unit-tests-xarray-Windows-py3.13-pandas2.3.3-polars 31.68% <100.00%> (ø)
unit-tests-xarray-Windows-py3.14-pandas2.3.3-polars 31.61% <100.00%> (ø)
unit-tests-xarray-macOS-py3.10-pandas2.3.3-polars 31.69% <100.00%> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

DataFrameModel.get_metadata should not be typed Optional

1 participant